package com.nenude.corejava.ch8;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.Reader;
import java.util.Scanner;


public class TestCheckException {

	public static void main(String[] args) {
		//check exception 和runtime exception 
		/*Scanner scanner=new Scanner(System.in);
		System.out.println("输入被除数：");
		int a=scanner.nextInt();
		System.out.println("输入除数：");
		int b=scanner.nextInt();
		//方法1
		if(b==0){
			System.out.println("除数不能为0，默认为除1！");
			b=1;
		}
		
		try {
			if (b==0) {
				System.out.println("除数不能为0，默认为除1！");
				b=1;
			}
			int c=a/b;
			System.out.println(c);
		} catch (ArithmeticException e) {//使用catch 捕获异常时，可以捕获特定的异常，或该异常的父类异常
			System.out.println("发生了算术运算异常！");
			e.printStackTrace();//打印堆栈，查看异常的错误信息；
		}*/


	//编写一段代码，读取某个java程序，并把读取的代码显示到控制台
	//此方法会出现乱码，因为把汉字拆分成两半来读取
	//1、文件定位，找文件-文件操作
	File file =new  File("D:\\java11workspace\\corejava\\src\\com\\nenude\\corejava\\ch2\\DateType.java");
	if (file.exists()) {
		//、读取内容--文件内容操作
		//内容的读取是按位操作的,8bit-->byte
		//使用文件流的方式进行读取
		//检查异常，如果不进行处理，则无法通过编译器检查，无法生成class文件
		
		FileInputStream inputStream=null;		
		try {
			
			//使用异常捕获方法，在main方法中处理异常， 
			 inputStream=new FileInputStream(file);
			byte [] buffer=new byte[128];//从文件中存到内存
			//reader 方法进行文件读取，如果文件读完会返回-1
			int length=inputStream.read(buffer);//获取长度
			
			while (length>0) {//while循环用于循环次数不确定的情况
				//把读取的数据存到字符串
				String s=new String(buffer, 0, length);
				System.out.println(s);
				length=inputStream.read(buffer);
			}
			System.out.println();//程序文件读取完后，换行
			
		} catch (FileNotFoundException e) {
			//在异常处理中可以通过打印堆栈信息，查看程序出错提示，并进行代码处理，给用户进行操作提示或指引用户其它操作
			e.printStackTrace();
		}catch (IOException e) {//一个try代码块中可能发生多个异常，可以使用多个catch块进行捕获
			e.printStackTrace();
		}finally{//finally 代码块跟在try后面，用于执行不管是否发生异常都要运行的代码；finally代码块一定会执行
			if (inputStream!=null) {
				try {
					inputStream.close();
				} catch (IOException e) {
					
					e.printStackTrace();
				}
			}
		}
		
	}
	System.out.println("main123 方法执行完毕！");
	}//mian

}
